<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Mozilla/4.5 [en] (X11; I; SunOS 5.5.1 sun4u) [Netscape]">
<title>tao_ifr User's Guide</title>
<!--  -->
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#0000FF" vlink="#CC0000">

<hr>
<h3>
tao_ifr User's Guide</h3>

<h3> Overview</h3> tao_ifr is TAO's interface repository loader. When executed, it will first resolve the interface repository, either by finding the interface repository's IOR in a file whose name is passed to it through the -ORBInitRef command line option, or by IP multicast (the default). Note - if the -ORBInitRef option is used, it should come first on the command line, since it will be consumed when the ORB is initialized. Then it will create entries in (or remove entries from) the repository corresponding to the declarations found in the IDL file(s) passed to it. If an entry to be removed is not found the repository, nothing happens. As stated elsewhere in the documentation, if an entry to be added is found to already exist in the repository (that is, if the interface repository id is found by lookup), the old entry will be replaced by the new one. It is the user's responsibility to make sure that no entries are unexpectedly replaced in the repository. This is also the method by which interfaces forward declared but not defined in one IDL file are fully defined in another. If the old and new entries are both interfaces, there is no way for tao_ifr to know if this is the intention, or if there is a genuine name clash. The behavior shown by tao_ifr in this case was chosen to conform to the behavior of the interface repository loaders from other ORB vendors.

<P>

<HR><P>

<h3><A NAME="options">tao_ifr Command Line Options</A></h3>

tao_ifr uses the front end of the TAO IDL compiler, which invokes your <tt>C</tt> (or <tt>C++</tt>)
preprocessor to resolve included IDL files.  It receives the common
options for preprocessors (such as <tt>-D</tt> or <tt>-I</tt>).  It
also receives other options that are specific to it<P>

<table BORDER=2 CELLSPACING=2 CELLPADDING=0 >
  <tr>
    <th>Option</th>
    <th>Description</th>
    <th>Remark</th>
  </tr>
  <tr><a NAME="ORBInitRef">
    <td><tt>-ORBInitRef InterfaceRepository=
            corbaloc:iiop:[hostname]:[port]/InterfaceRepository</tt></td>
    
    <td>Locate the Interface Repository using the <a href="../INS.html">Interoperable Naming Service</a></td>
    <td>Without this option, the Interface Repository will be located by multicast.</td>

   </tr>
   <tr>
    <td><tt>-ORBInitRef InterfaceRepository=file://[filename]</tt></td>
    <td>Locate the Interface Repository using the IOR from a file.</td>

    <td>Without this option, the Interface Repository will be located by multicast.</td>
  </tr>
  <tr><a NAME="u">
    <td><tt>-u</tt></td>

    <td>Prints the options given below and exits.</td>
    <td>Outputs to stdout by default.</td>
  </tr>

  <tr> <a NAME="v">
    <td><tt>-v</tt></td>

    <td>Traces tao_ifr processing stages.</td>
    <td>&nbsp;</td>
  </tr>

  <tr> <a NAME="V">
    <td><tt>-V</tt></td>

    <td>Prints version information and exits.</td>
    <td>&nbsp;</td>
  </tr>

  <tr><a name="E">
    <td><tt>-E</tt></td>

    <td>Invokes the preprocessor and exits.</td>
    <td>Outputs to stdout by default.</td>
  </tr>

  <tr><a name="d">
    <td><tt>-d</tt></td>

    <td>Outputs a dump of the AST.</td>
    <td>Outputs to stdout by default.</td>
  </tr>

 <tr><a name="D">
    <td><tt>-D</tt><i>macro_definition</i></td>

    <td><i>macro_definition</i> is passed to the preprocessor.</td>
    <td>&nbsp;</td>
  </tr>

  <tr><a name="U">
    <td><tt>-U</tt><i>macro_name</i></td>

    <td><i>macro_name</i> is passed to the preprocessor.</td>
    <td>Undefines <i>macro_name</i>.</td>
  </tr>

  <tr><a name="I">
    <td><tt>-I</tt><i>include_path</i></td>

    <td><i>include_path</i> is passed to the preprocessor.</td>
    <td>&nbsp;</td>
  </tr>

  <tr><a name="A">
    <td><tt>-A</tt><i>assertion</i></td>

    <td><i>assertion</i> is passed to the preprocessor.</td>
    <td>Local implementation-specific escape.</td>
  </tr>

  <tr><a name="Y">
    <td><tt>-Yp,<i>path</i></tt></td>

    <td>Specifies the path for the preprocessor.</td>
    <td>&nbsp;</td>
  </tr>

  <tr><a name="t">
    <td><tt>-t</tt>&nbsp;<i>directory_name</i></td>

    <td>Temporary directory to be used by the IDL compiler.</td>
    <td> Default:
        Resolve ACE_DEFAULT_TEMP_DIR_ENV. If it is not defined,
        /tmp/ is used.
   </td>
  </tr>

  <tr><a name="Cw">
    <td><tt>-Cw</tt></td>

    <td>Output a warning if two identifiers in the same scope differ in
        spelling only by case.</td>

    <td>Default is to output error message. This option has been added as a nicety
        for dealing with legacy IDL files, written when the CORBA rules for name
        resolution were not as stringent.</td>
  </tr>

  <tr><a name="Ce">
    <td><tt>-Ce</tt></td>

    <td>Output an error if two indentifiers in the same scope differ in
        spelling only by case.</td>

    <td>This will also happen by default.</td>
  </tr>

  <tr><a name="w">
    <td><tt>-w</tt></td>

    <td>Suppress IDL compiler warning messages.</td>

    <td>&nbsp;</td>
  </tr>

  <tr><a name="Si">
    <td><tt>-Si</tt></td>

    <td>Suppress processing of included IDL files.</td>
    <td>Default is to process included IDL files.</td>
  </tr>

  <tr><a name="L">
    <td><tt>-L</tt></td>

    <td>Enables locking at the IDL file level.</td>
    <td>Guards against the same IDL file being processed concurrently by multiple
        threads running tao_ifr.</td>
  </tr>

  <tr><a name="r">
    <td><tt>-r</tt></td>

    <td>Remove contents of IDL file(s) from the repository.</td>
    <td>Default is to add contents.</td>
  </tr>

</table> <P>

 <P><HR><P>
Back to the Interface Repository <A HREF="index.html">documentation</A>.

<!--#include virtual="/~schmidt/cgi-sig.html" -->

</body>
</html>
